package com.soft.javase.ch07;

import jdk.nashorn.internal.runtime.ParserException;

/**
 * @author wangzhisen
 * @Desc TODO
 * @date 2025/4/28
 *
 * 处理异常的方式
 * 方式一：throw、throws
 * 1.消极的处理方式
 * 2.向上抛出，抛给调用者处理
 * 3.除了main()以外，都会优先选择抛出方式解决，希望调用者可以预见到此问题
 * 4.使用场景：自定义异常
 *
 * 方式二：try...catch...finally
 * 1.积极的处理方式
 * 2.就地处理
 * 3.在抛无可抛的地方，例如：main()、JFrame窗体等
 * 4.使用场景：编译期异常
 *
 *
 * 面试题 - throw和throws区别
 * throw 关键字
 * 1.在方法内部，抛出异常（以自定义异常为主）
 * 2.throw 异常对象;  等价于   throw new 异常构造方法("异常信息");
 * 3.throw抛出是运行期异常RuntimeException，则不会强制处理；
 * throw抛出是Exception，则会需要强制处理，要么就地try，要么继续向上抛
 *
 * throws 关键字
 * 1.在方法声明处，抛出异常（以自定义异常、编译期异常为主）
 * 2.方法名() throws 异常类1 ,  异常类2{  //方法体 }
 * 3.方法后面可以追加多个异常类，一旦有根异常Exception前面异常类可以省略不写
 * 4.一旦选择向上抛出异常，调用者是可以看见，然后也需要做处理，要么就地try（若是main()），要么继续向上抛
 */
public class ThrowDemo {

    public static void main(String[] args) /*throws Exception*/ {
        try {
            isFlag(true);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static void isFlag(boolean flag) throws ParserException,RuntimeException,Exception {

        if (flag) {
            //throw new 异常类型();
            /*throw new RuntimeException("异常抛出了");*/
            throw new Exception();
        }else {
            System.out.println("执行到此");
        }
    }


}
